package de.hdu.pms.ho.model;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;



/**
 ** Basis class which includes all properties of {@link Zimmer}
 * 
 * Following specifications will be declared:
 * <ul>
 * <li>id -- primary key</li>
 * <li>nr</li>
 * <li>betten</li>
 * <li>qm</li>
 * <li>haustier -- if pets are allowed</li>
 * <li>raucher -- whether smoking or nonsmoking room</li>
 * </ul>
 * 
 * @author Helena Semmel
 * 
 *
 */
@Entity
@Table(name="Zimmer")		//Tabellenname
public class Zimmer {
	
	@Id
	@GeneratedValue
	@Column(name="pk_zimmer")			//PS-Bezeichnung in DB
	private Integer id;					//PS
	//@Column(name="nr", unique=true)		dass nr eindeutig ist
	private Integer nr;
	private Integer betten;				//Anzahl der Betten
	private Integer qm;					//Zimmergröße in qm
	private Boolean haustier;			//ob Haustiere erlaubt sind oder nicht
	private Boolean raucher;			//ob Raucher- oder Nichtraucherzimmer				
	

	/*@OneToMany
	private Set<ZimmerKunde> zimmerKunde;*/

	@ManyToOne(fetch = FetchType.EAGER)							//wird sofort geladen, wenn zimmer geladen wird
	@JoinColumn(name = "fk_kategorie", nullable = false)		//1:N-Beziehung zu Kategorie
	private Kategorie kategorie;
	

	public Zimmer (Integer id, Integer nr, Integer betten, Integer qm, Boolean haustier, Boolean raucher){
		super();
		this.id = id;
		this.nr = nr;
		this.betten = betten;
		this.qm = qm;
		this.haustier = haustier;
		this.raucher = raucher;
	}
	
	public Zimmer (Integer nr, Integer betten, Integer qm, Boolean haustier, Boolean raucher, Kategorie kategorie){
		super();
		this.nr = nr;
		this.betten = betten;
		this.qm = qm;
		this.haustier = haustier;
		this.raucher = raucher;
		this.kategorie = kategorie;
	}
	
	public Zimmer(){
		this.id = null;
		this.nr = null;
		this.betten = null;
		this.qm = null;
		this.haustier = false;
		this.raucher = false;
	
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getNr() {
		return nr;
	}
	public void setNr(Integer nr) {
		this.nr = nr;
	}
	public Integer getBetten() {
		return betten;
	}
	public void setBetten(Integer betten) {
		this.betten = betten;
	}
	public Integer getQm() {
		return qm;
	}
	public void setQm(Integer qm) {
		this.qm = qm;
	}
	public Boolean getHaustier() {
		return haustier;
	}
	public void setHaustier(Boolean haustier) {
		this.haustier = haustier;
	}
	public Boolean getRaucher() {
		return raucher;
	}
	public void setRaucher(Boolean raucher) {
		this.raucher = raucher;
	}
	public Kategorie getKategorie() {
		return kategorie;
	}
	public void setKategorie(Kategorie kategorie) {
		this.kategorie = kategorie;
	}

}
